#!/usr/bin/env bash

# Copyright (c) 2025 Shenzhen Kaihong Digital Industry Development Co., Ltd.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

srcdir=sip-4.19.25

extra_args=()
if [ "${arch}" != "${host_arch}" ]; then
    case "${CC}" in
        *clang*):
            cc_kind=clang
            ;;
        *gcc*):
            cc_kind=g++
            ;;
    esac

    platform="linux-${arch}-${triple_env}-${cc_kind}"
    cat > ${srcdir}/specs/${platform} <<EOF
MAKEFILE_GENERATOR      = UNIX
TEMPLATE                = app
CONFIG                  += qt warn_on release incremental link_prl
QT                      += core gui
QMAKE_INCREMENTAL_STYLE = sublib

QMAKE_CC                = ${CC}
QMAKE_LEX               = flex
QMAKE_LEXFLAGS          =
QMAKE_YACC              = yacc
QMAKE_YACCFLAGS         = -d
QMAKE_YACCFLAGS_MANGLE  = -p \$base -b \$base
QMAKE_YACC_HEADER       = \$base.tab.h
QMAKE_YACC_SOURCE       = \$base.tab.c
QMAKE_CFLAGS            = -pipe
QMAKE_CFLAGS_DEPS       = -M
QMAKE_CFLAGS_WARN_ON    = -Wall -W
QMAKE_CFLAGS_WARN_OFF   = -w
QMAKE_CFLAGS_RELEASE    = -O2
QMAKE_CFLAGS_DEBUG      = -g
QMAKE_CFLAGS_SHLIB      = -fPIC
QMAKE_CFLAGS_YACC       = -Wno-unused -Wno-parentheses
QMAKE_CFLAGS_THREAD     = -D_REENTRANT
QMAKE_CFLAGS_HIDESYMS   = -fvisibility=hidden

QMAKE_CXX               = ${CXX}
QMAKE_CXXFLAGS          = \$\$QMAKE_CFLAGS
QMAKE_CXXFLAGS_DEPS     = \$\$QMAKE_CFLAGS_DEPS
QMAKE_CXXFLAGS_WARN_ON  = \$\$QMAKE_CFLAGS_WARN_ON
QMAKE_CXXFLAGS_WARN_OFF = \$\$QMAKE_CFLAGS_WARN_OFF
QMAKE_CXXFLAGS_RELEASE  = \$\$QMAKE_CFLAGS_RELEASE
QMAKE_CXXFLAGS_DEBUG    = \$\$QMAKE_CFLAGS_DEBUG
QMAKE_CXXFLAGS_SHLIB    = \$\$QMAKE_CFLAGS_SHLIB
QMAKE_CXXFLAGS_YACC     = \$\$QMAKE_CFLAGS_YACC
QMAKE_CXXFLAGS_THREAD   = \$\$QMAKE_CFLAGS_THREAD
QMAKE_CXXFLAGS_HIDESYMS = \$\$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden

QMAKE_INCDIR            =
QMAKE_LIBDIR            =
QMAKE_INCDIR_X11        =
QMAKE_LIBDIR_X11        =
QMAKE_INCDIR_QT         = \$\$[QT_INSTALL_HEADERS]
QMAKE_LIBDIR_QT         = \$\$[QT_INSTALL_LIBS]
QMAKE_INCDIR_OPENGL     =
QMAKE_LIBDIR_OPENGL     =
QMAKE_LINK              = ${CXX}
QMAKE_LINK_SHLIB        = ${CXX}
QMAKE_LFLAGS            =
QMAKE_LFLAGS_RELEASE    =
QMAKE_LFLAGS_DEBUG      =
QMAKE_LFLAGS_SHLIB      = -shared
QMAKE_LFLAGS_PLUGIN     = \$\$QMAKE_LFLAGS_SHLIB
QMAKE_LFLAGS_SONAME     = -Wl,-soname,
QMAKE_LFLAGS_THREAD     =
QMAKE_RPATH             = -Wl,-rpath,

QMAKE_LIBS              =
QMAKE_LIBS_DYNLOAD      = -ldl
QMAKE_LIBS_X11          =
QMAKE_LIBS_X11SM        =
QMAKE_LIBS_NIS          = -lnsl
QMAKE_LIBS_OPENGL       =
QMAKE_LIBS_OPENGL_QT    =
QMAKE_LIBS_THREAD       = -lpthread

QMAKE_MOC               = \$\$[QT_INSTALL_BINS]/moc
QMAKE_UIC               = \$\$[QT_INSTALL_BINS]/uic

QMAKE_AR                = ${AR} cqs
QMAKE_RANLIB            =

QMAKE_TAR               = tar -cf
QMAKE_GZIP              = gzip -9f
QMAKE_COPY              = cp -f
QMAKE_COPY_FILE         = \$(COPY)
QMAKE_COPY_DIR          = \$(COPY) -r
QMAKE_MOVE              = mv -f
QMAKE_DEL_FILE          = rm -f
QMAKE_DEL_DIR           = rmdir
QMAKE_STRIP             = ${STRIP}
QMAKE_STRIPFLAGS_LIB    += --strip-unneeded
QMAKE_CHK_DIR_EXISTS    = test -d
QMAKE_MKDIR             = mkdir -p
load(qt_config)
EOF
    
    extra_args+=(--platform=${platform})
fi

cd ${srcdir} || exit 1
python3 build.py prepare || exit 1
python3 configure.py ${extra_args[@]} || exit 1
make -j ${MAX_JOBS} || exit 1
